drange
For adding/subtracting sets of range of numbers.
Usage
const DRange = require('drange');
var allNums = new DRange(1, 100); //[ 1-100 ]
var badNums = DRange(13).add(8).add(60,80); //[8, 13, 60-80]
var goodNums = allNums.clone().subtract(badNums);
console.log(goodNums.toString()); //[ 1-7, 9-12, 14-59, 81-100 ]
var randomGoodNum = goodNums.index(Math.floor(Math.random() * goodNums.length));
API
new DRange([low], [high])
Creates a new instance of DRange.
DRange#length
The total length of all subranges
DRange#add(low, high)
Adds a subrange
DRange#add(drange)
Adds all of another DRange's subranges
DRange#subtract(low, high)
Subtracts a subrange
DRange#subtract(drange)
Subtracts all of another DRange's subranges
DRange#intersect(low, range)
Keep only subranges that overlap the given subrange
DRange#intersect(drange)
Intersect all of another DRange's subranges
DRange#index(i)
Get the number at the specified index
var drange = new DRange()
drange.add(1, 10);
drange.add(21, 30);
console.log(drange.index(15));
DRange#numbers()
Get contained numbers
var drange = new DRange(1, 4)
drange.add(6);
drange.subtract(2);
console.log(drange.numbers());
DRange#subranges()
Get copy of subranges
var drange = new DRange(1, 4)
drange.add(6, 8);
console.log(drange.subranges());
DRange#clone()
Clones the drange, so that changes to it are not reflected on its clone
Install
npm install drange
Tests
Tests are written with mocha
npm test
Integration with TypeScript
DRange includes TypeScript definitions.
import * as DRange from "drange";
const range: DRange = new Drange(2, 5);
Use dtslint to check the definition file.
npm install -g dtslint
npm run dtslint